package control.construirEdificio;

import excepcionesGenerales.ExcepImposibleEjecutar;
import excepcionesJugador.ExcepSinFondos;
import excepcionesRegion.ExcepRegionNoConquistada;
import mapas.Region;
import jugadores.Jugador;

/**
 * @author Grupo 2, Algoritmos y programacion 3, Catedra Fontela<br>1er cuat 2007    
 * <br>Esta clase se encarga de representar un producto del tipo edificio, que se puede comprar
 */

public abstract class ProductoEdificio {
	private String Nombre;
	private int Coste;
	private int Tiempo;
	
	protected void setNombre(String nombre){
		this.Nombre = nombre;
	}
	protected void setCoste(int dinero){
		this.Coste = dinero;
	}
	protected void setTiempo(int tiempo){
		this.Tiempo = tiempo;
	}
	public String getNombre(){
		return Nombre;
	}
	
	public  int getCoste(){
		return Coste;
	}
	
	public int getTiempo(){
		return Tiempo;
	}
	
	public String toString(){
		String cadena = getNombre();
		cadena += "   Costo: " + getCoste() + "   Tiempo: " + getTiempo();
		return cadena;
	}
	/**
	 * Permite comprar el producto
	 * @param jugador Jugador que lo compra
	 * @param region Region donde colocar el producto
	 * @throws ExcepImposibleEjecutar Si no se puede ejecutar la compra
	 * @throws ExcepSinFondos Si no hay fondos para hacer la compra
	 * @throws ExcepRegionNoConquistada Si no esta conquistada la region donde se quiere comprar
	 */
	public abstract void Comprar(Jugador jugador, Region region)  throws ExcepImposibleEjecutar, ExcepSinFondos, ExcepRegionNoConquistada;
}
